<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>allSettled</title>
</head>

<body>
  <script>
    'use strict'
    onload = function () {
      /* 
        allSettled 介绍
          1.接收一个 iterable 类型的数据(一般为数组)作为参数，iterable 中的元素为 Promise 实例
          2.返回值
            - 默认返回一个 pending 状态的 Promise 
            - 当 iterable 中的所有 Promise 实例全部执行完毕(无论成功失败)，返回一个成功状态的 Promise 实例，值为每一个 Promise 实例状态和值组成的对象，对象按顺序组成的数组
      */

      const A = new Promise((resolve, reject) => {
        try {
          // 模拟请求
          setTimeout(() => {
            console.log('数据A请求成功')
            resolve('数据A')
          }, 2000)
        } catch (error) {
          reject(error)
        }
      })

      const B = new Promise((resolve, reject) => {
        try {
          // 模拟异常
          throw new Error('数据B请求异常')
          // 模拟请求
          setTimeout(() => {
            console.log('数据B请求成功')
            resolve('数据B')
          }, 1000)
        } catch (error) {
          reject(error)
        }
      })

      const result = Promise.allSettled([A, B])
      // console.log(result)
      result.then((value) => {
        console.log(value)
      })
    }
  </script>
</body>

</html>